package com.ng.desktop.hr.view;

import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JDesktopPane;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;

import org.springframework.stereotype.Component;

import com.ng.desktop.hr.services.NGConfiguration;
import com.ng.desktop.hr.view.cases.CaseFrame;
import com.ng.desktop.hr.view.customer.CustomerFrame;

@Component("frameContainer")
public class FrameContainer extends JFrame implements ActionListener {

	private static final long serialVersionUID = 4218532460895412585L;

	private JMenuBar menuBarra;
	private JMenu menuArchivo;
	private JMenu menuAyuda = new JMenu();
	private JMenu menuGestionar;
	private JMenuItem menuItemCustomer;
	private JMenuItem menuItemCases;
	private JMenuItem menuItemSalir;
	private JMenuItem menuAcerca;
	
	private JDesktopPane desktopPane;
	
	private CustomerFrame customerFrame;
	private CaseFrame caseFrame;

	public FrameContainer() {
		this.initComponents();
		
		this.buildGui();

		this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
	}
	
	private void initComponents() {
		this.menuBarra = new JMenuBar();
		this.menuArchivo = new JMenu("Archivo");
		menuArchivo.setMnemonic('a');
		this.menuAyuda = new JMenu("Ayuda");
		menuAyuda.setMnemonic('y');
		this.menuAcerca = new JMenuItem("Acerca de...");
		menuAcerca.setMnemonic('a');
		menuAcerca.addActionListener(this);
		this.menuGestionar = new JMenu("Gestionar");
		menuGestionar.setMnemonic('g');
		this.menuItemCustomer = new JMenuItem("Clientes");
		menuItemCustomer.setMnemonic('c');
		menuItemCustomer.addActionListener(this);
		this.menuItemCases = new JMenuItem("Casos");
		menuItemCases.setMnemonic('a');
		menuItemCases.addActionListener(this);
		this.menuItemSalir = new JMenuItem("Salir");
		menuItemSalir.setMnemonic('s');
		menuItemSalir.addActionListener(this);
		this.desktopPane = new JDesktopPane();
	}

	// Component initialization
	private void buildGui() {

		this.setContentPane(desktopPane);

		this.setSize(new Dimension(1024, 600));
		this.setTitle(NGConfiguration
				.getConfiguration(NGConfiguration.APPLICATION_TITLE)
				+ " - v 1.0.1");

		// Arbol Menu Archivo
		menuArchivo.add(menuGestionar);
		menuArchivo.addSeparator();
		menuArchivo.add(menuItemSalir);

		// Arbol Menu Gestionar
		menuGestionar.add(menuItemCustomer);
		menuGestionar.add(menuItemCases);
		menuGestionar.addSeparator();

		// Arbol Menu Ayuda
		menuAyuda.add(menuAcerca);

		// Barra
		menuBarra.add(menuArchivo);
		menuBarra.add(menuAyuda);
		
		this.setJMenuBar(menuBarra);
	}
	
	@Override
	public void actionPerformed(ActionEvent e) {

		if (e.getSource() == menuItemCustomer) {
			if (customerFrame == null || !customerFrame.isDisplayable()) {
				customerFrame = new CustomerFrame();
				desktopPane.add(customerFrame);
				customerFrame.setVisible(true);
			} else {
				customerFrame.toFront();
			}
		} else if (e.getSource() == menuItemCases) {
			if (caseFrame == null || !caseFrame.isDisplayable()) {
				caseFrame = new CaseFrame();
				desktopPane.add(caseFrame);
				caseFrame.setVisible(true);
			} else {
				caseFrame.toFront();
			}
		} else if (e.getSource() == menuItemSalir) {
			if (JOptionPane.showConfirmDialog(this,
					"¿Está seguro que abandonar la aplicación?", "Salir",
					JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE) == JOptionPane.YES_OPTION) {
				this.dispose();
			}
		} else if (e.getSource() == menuAcerca) {
			new AyudaDialog(this).setVisible(true);
		}

	}

	public JDesktopPane getDesktopPane() {
		return desktopPane;
	}
	
	

}
